home *** CD-ROM | disk | FTP | other *** search
/ Ancient Egyptian Art - The Brooklyn Museum / Ancient Egyptian Art.iso / axs.mst < prev    next >
Text File  |  1995-11-29  |  13KB  |  386 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST BADPATH       = 6400
  20.  
  21. ''Bitmap ID
  22. CONST LOGO = 1
  23.  
  24. GLOBAL DEST$        ''Default destination directory.
  25. GLOBAL OPTCUR$      ''Option selection from option dialog.
  26.  
  27. DECLARE SUB Install
  28. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  29. DECLARE FUNCTION InstallQT  AS INTEGER
  30. DECLARE FUNCTION RemoveOldQTFiles (FilePath$) AS INTEGER
  31. DECLARE FUNCTION CheckForOld AS INTEGER
  32.  
  33. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  34.  
  35.  
  36. DECLARE FUNCTION GetQTWVersion LIB "setupenu.dll" (szDLL$) AS INTEGER
  37. DECLARE FUNCTION GetResourceString LIB "setupenu.dll" (szResource$, idString%) AS INTEGER
  38. DECLARE FUNCTION StartCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  39. DECLARE FUNCTION StopCustomSetup LIB "setupenu.dll" (hinst%, hwnd%) AS INTEGER
  40.  
  41.  
  42. INIT:
  43.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  44.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  45.  
  46.     SetBitmap CUIDLL$, LOGO
  47.     SetTitle "The Egyptian CD Setup"
  48.  
  49.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  50.     IF szInf$ = "" THEN
  51.     szInf$ = GetSymbolValue("STF_CWDDIR") + "axs.INF"
  52.     END IF
  53.     ReadInfFile szInf$
  54.  
  55. WELCOME:
  56.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  57.     IF sz$ = "CONTINUE" THEN
  58.     UIPop 1
  59.     ELSE
  60.     GOSUB ASKQUIT
  61.     GOTO WELCOME
  62.     END IF
  63.  
  64.     res% = InstallQT
  65.  
  66.     Install
  67.  
  68.  
  69. QUIT:
  70.     ON ERROR GOTO ERRQUIT
  71.  
  72.     IF ERR = 0 THEN
  73.     dlg% = EXITSUCCESS
  74.     ELSEIF ERR = STFQUIT THEN
  75.     dlg% = EXITQUIT
  76.     ELSE
  77.     dlg% = EXITFAILURE
  78.     END IF
  79. QUITL1:
  80.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  81.     IF sz$ = "REACTIVATE" THEN
  82.     GOTO QUITL1
  83.     END IF
  84.     UIPop 1
  85.  
  86.     END
  87.  
  88. ERRQUIT:
  89.     i% = DoMsgBox("Setup sources were corrupted, call DCI at (510) 814-7200!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  90.     END
  91.  
  92.  
  93.  
  94. BADPATH:
  95.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  96.     IF sz$ = "REACTIVATE" THEN
  97.     GOTO BADPATH
  98.     END IF
  99.     UIPop 1
  100.     RETURN
  101.  
  102.  
  103.  
  104. ASKQUIT:
  105.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  106.  
  107.     IF sz$ = "EXIT" THEN
  108.     UIPopAll
  109.     ERROR STFQUIT
  110.     ELSEIF sz$ = "REACTIVATE" THEN
  111.     GOTO ASKQUIT
  112.     ELSE
  113.     UIPop 1
  114.     END IF
  115.     RETURN
  116.  
  117.  
  118.  
  119. '**
  120. '** Purpose:
  121. '**     Builds the copy list and performs all installation operations.
  122. '** Arguments:
  123. '**     none.
  124. '** Returns:
  125. '**     none.
  126. '*************************************************************************
  127. SUB Install STATIC
  128.  
  129.     GroupName$ = "Ancient Egyptian Art"
  130.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  131. 'ImageAXS Ini
  132.     WinDir$ = GetWindowsDir
  133.     ClearCopyList
  134.     AddSectionFilesToCopyList "Ini", SrcDir$, WinDir$
  135.     CopyFilesInCopyList
  136.     ClearCopyList
  137.  
  138.     CreateIniKeyValue "WIN.INI", "Extensions", "egy", MakePath(SrcDir$,"imageaxs\imageaxs.exe ^.egy"), cmoOverwrite
  139.     CreateProgmanGroup GroupName$, "", cmoNone
  140.     ShowProgmanGroup  GroupName$, 1, cmoNone
  141.  
  142.     CreateProgmanItem GroupName$, "Masterworks", MakePath(SrcDir$,"Egypt.egy"), "", cmoOverwrite
  143.     CreateProgmanItem GroupName$, "Selected Large Images", MakePath(SrcDir$,"Large.egy"), "", cmoOverwrite
  144.     CreateProgmanItem GroupName$, "ReadMe", MakePath(SrcDir$,"readme.wri"), "", cmoOverwrite
  145. rem CreateProgmanItem GroupName$, "ReadMe2", MakePath(SrcDir$,"readme2.wri"), "", cmoOverwrite
  146.     CreateProgmanItem GroupName$, "CD-ROM Catalog", MakePath(SrcDir$,"sampler\sampler.exe"), "", cmoOverwrite
  147.     CreateProgmanItem GroupName$, "Feature Tour", MakePath(SrcDir$,"tour\tour.exe"), "", cmoOverwrite
  148. END SUB
  149.  
  150.  
  151.  
  152. '**
  153. '** Purpose:
  154. '**     Appends a file name to the end of a directory path,
  155. '**     inserting a backslash character as needed.
  156. '** Arguments:
  157. '**     szDir$  - full directory path (with optional ending "\")
  158. '**     szFile$ - filename to append to directory
  159. '** Returns:
  160. '**     Resulting fully qualified path name.
  161. '*************************************************************************
  162. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  163.     IF szDir$ = "" THEN
  164.     MakePath = szFile$
  165.     ELSEIF szFile$ = "" THEN
  166.     MakePath = szDir$
  167.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  168.     MakePath = szDir$ + szFile$
  169.     ELSE
  170.     MakePath = szDir$ + "\" + szFile$
  171.     END IF
  172. END FUNCTION
  173.  
  174. rem InstallQT: Perform actual installation
  175. rem ------------------------------------
  176.  
  177. FUNCTION InstallQT STATIC AS INTEGER
  178.  
  179. rem Initialize global vriables
  180. rem --------------------------
  181.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  182.     DEST$           = GetWindowsSysDir
  183.     DEST2$          = GetWindowsDir
  184.     DEST3$          = "C:\QTW"
  185.     LOCALINST$      = "1"
  186.     CLIENTINST$     = "2"
  187.     SERVERINST$     = "3"
  188.     SETUPPATH$      = DEST$
  189.     SETUPTYPE$      = LOCALINST$
  190.     APPNEEDS$       = "AppNeeds"
  191.     EXTRACOSTS$     = "ExtraCosts"
  192.     SECTIONKEY$     = "SectionKey"
  193.     SUCCESS%        = INSTALLFAILED
  194.  
  195.     ClearCopyList
  196.     rem For Local or Server installs ...
  197.     rem --------------------------------
  198. ''        IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  199.             AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  200.             AddSectionFilesToCopyList "Winexe", SOURCE$, DEST2$
  201. ''        END IF
  202.  
  203.         j% = CheckForOld()
  204.  
  205.         rem Copy all the files from the source to the destination
  206.         rem -----------------------------------------------------
  207.  
  208.         CopyFilesInCopyList
  209.  
  210.     rem Update WIN.INI and SYSTEM.INI
  211.     rem -----------------------------
  212. ''        IF (SETUPTYPE$ = LOCALINST$) OR (SETUPTYPE$ = CLIENTINST$) THEN
  213.            inia$ = MakePath(DEST2$, "WIN.INI")
  214.            inib$ = MakePath(DEST2$, "WIN.QTW")
  215.            CopyFile inia$, inib$, cmoOverwrite, 0
  216.            inia$ = MakePath(DEST2$, "SYSTEM.INI")
  217.            inib$ = MakePath(DEST2$, "SYSTEM.QTW")
  218.            CopyFile inia$, inib$, cmoOverwrite, 0
  219.            CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(DEST2$,"player.exe") + " ^.mov", cmoOverwrite
  220.            CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(DEST2$,"viewer.exe") + " ^.pic", cmoOverwrite
  221.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  222.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  223.            CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  224.            i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(DEST$, "mciqtw.drv"), "SYSTEM.INI")
  225.  
  226.         rem Compatibility hacks.
  227.            i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "SYSTEM.INI")
  228.            CreateIniKeyValue "WIN.INI", "Mach", "devicebitmap", "off", cmoOverwrite
  229.  
  230.         rem Update Registration Database
  231.         rem ----------------------------
  232.            RUN MakePath(DEST2$, "player.exe") + " install"
  233.            RUN MakePath(DEST2$, "viewer.exe") + " install"
  234.  
  235.         rem Create QTW.INI
  236.         rem ----------------
  237.            ini$ = MakePath(DEST2$, "QTW.INI")
  238.            CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  239.            RemoveIniKey ini$, "video", "optimize", cmoNone
  240.  
  241.  
  242. '***********************************************************************************
  243.  
  244.  
  245.     rem Create a Program Manager group
  246.     rem ------------------------------
  247.            GROUP$ = "QuickTime for Windows"
  248.            CreateProgmanGroup GROUP$, "", cmoNone
  249.            CreateProgmanItem GROUP$, "Player", MakePath(DEST2$,"player.exe"), "", cmoOverwrite
  250.            CreateProgmanItem GROUP$, "Viewer", MakePath(DEST2$,"viewer.exe"), "", cmoOverwrite
  251.            CreateProgmanItem GROUP$, "Read Me", MakePath(DEST2$,"readme.exe"), "", cmoOverwrite
  252.  
  253. ''        END IF
  254.  
  255.     rem Indicate install completed OK
  256.     rem -----------------------------
  257.         InstallQT = INSTALLOK
  258.  
  259. END FUNCTION
  260.  
  261. rem Check for Older versions of the Quicktime For Windows components
  262. rem ---------------------------------------------------------------
  263. FUNCTION CheckForOld STATIC AS INTEGER
  264.  
  265. ''    sz$ = UIStartDlg(CUIDLL$, OLDMESS, "FModelessDlgProc", 0, "")
  266.  
  267. CheckForOld1:
  268.     cursor% = ShowWaitCursor()
  269.     OldFilePath$ = FindFileUsingFileOpen("qtim.dll")
  270.     RestoreCursor cursor%
  271.     IF (OldFilePath$ <> "") THEN
  272.         j% = RemoveOldQTFiles(OldFilePath$)
  273.         IF j% = FILES_REMOVED THEN
  274.             GOTO CheckForOld1
  275.         END IF
  276.     END IF
  277.  
  278. CheckForOld2:
  279.     cursor% = ShowWaitCursor()
  280.     OldFilePath$ = FindFileUsingFileOpen("qtimcmgr.dll")
  281.     RestoreCursor cursor%
  282.     IF (OldFilePath$ <> "") THEN
  283.         j% = RemoveOldQTFiles(OldFilePath$)
  284.         IF j% = FILES_REMOVED THEN
  285.             GOTO CheckForOld2
  286.         END IF
  287.     END IF
  288.  
  289.     GetLocalHardDrivesList "HardDrives"
  290.     NumDrives% = GetListLength("HardDrives")
  291.  
  292.     IF (NUMDRIVES% > 0) THEN
  293.         FOR i% = 1 TO NumDrives% STEP 1
  294.             CurrentDrive$ = GetListItem("HardDrives",i%) + ":\"
  295.             CheckForOld3:
  296.                 cursor% = ShowWaitCursor()
  297.                 OldFilePath$ = FindFileInTree("qtim.dll",CurrentDrive$)
  298.                 RestoreCursor cursor%
  299.                 IF (OldFilePath$ <> "") THEN
  300.                     j% = RemoveOldQTFiles(OldFilePath$)
  301.                     IF j% = FILES_REMOVED THEN
  302.                         GOTO CheckForOld3
  303.                     END IF
  304.                 END IF
  305.  
  306.             CheckForOld4:
  307.                 cursor% = ShowWaitCursor()
  308.                 OldFilePath$ = FindFileInTree("qtimcmgr.dll",CurrentDrive$)
  309.                 RestoreCursor cursor%
  310.                 IF (OldFilePath$ <> "") THEN
  311.                     j% = RemoveOldQTFiles(OldFilePath$)
  312.                     IF j% = FILES_REMOVED THEN
  313.                         GOTO CheckForOld4
  314.                     END IF
  315.                 END IF
  316.         NEXT i%
  317.     END IF
  318.  
  319.     UIPOP 1
  320.  
  321. END FUNCTION
  322.  
  323. FUNCTION RemoveOldQTFiles (FilePath$) STATIC AS INTEGER
  324.  
  325.     RemoveOldQTFiles = FILES_SKIPPED
  326.  
  327.     SPLITPATH FilePath$, drv$, dir$, filename$, ext$
  328.     DeadPath$ = drv$ + dir$
  329.  
  330.   rem check version resources if they exist
  331.       szVersion$ = GetVersionOfFile(FilePath$)
  332.  
  333.   rem dialog choices are Remove,Skip ("Continue","Back" buttons)
  334.     SetSymbolValue "EditTextIn", "Found Version [" + szVersion$ + "] on " + DeadPath$
  335. ''    sz$ = UIStartDlg(CUIDLL$, NUKEOLD, "FEditDlgProc", 0, "")
  336.     sz$ = "CONTINUE"
  337.     UIPop 1
  338.  
  339.     IF sz$ = "BACK" THEN
  340.         EXIT FUNCTION
  341.     END IF
  342.  
  343.     IF sz$ <> "CONTINUE" THEN
  344.         EXIT FUNCTION
  345.     END IF
  346.  
  347.     rem all versions
  348.         RemoveFile MakePath(DeadPath$, "qtim.dll"), cmoForce
  349.         RemoveFile MakePath(DeadPath$, "qtimcmgr.dll"), cmoForce
  350.     rem version 1.0.0
  351.         RemoveFile MakePath(DeadPath$, "qcmc.dll"), cmoForce
  352.         RemoveFile MakePath(DeadPath$, "qtjpeg.dll"), cmoForce
  353.         RemoveFile MakePath(DeadPath$, "qtraw.dll"), cmoForce
  354.         RemoveFile MakePath(DeadPath$, "qtsmc.dll"), cmoForce
  355.         RemoveFile MakePath(DeadPath$, "qtrpza.dll"), cmoForce
  356.         RemoveFile MakePath(DeadPath$, "qtrle.dll"), cmoForce
  357.         RemoveFile MakePath(DeadPath$, "qtcvid.dll"), cmoForce
  358.         RemoveFile MakePath(DeadPath$, "qtrt21.dll"), cmoForce
  359.         RemoveFile MakePath(DeadPath$, "qtvhdw.dll"), cmoForce
  360.     rem version 1.1.x and later
  361.         RemoveFile MakePath(DeadPath$, "mciqtw.drv"), cmoForce
  362.         RemoveFile MakePath(DeadPath$, "qcmc.qtc"), cmoForce
  363.         RemoveFile MakePath(DeadPath$, "qtjpeg.qtc"), cmoForce
  364.         RemoveFile MakePath(DeadPath$, "qtraw.qtc"), cmoForce
  365.         RemoveFile MakePath(DeadPath$, "qtsmc.qtc"), cmoForce
  366.         RemoveFile MakePath(DeadPath$, "qtrpza.qtc"), cmoForce
  367.         RemoveFile MakePath(DeadPath$, "qtrle.qtc"), cmoForce
  368.         RemoveFile MakePath(DeadPath$, "qtcvid.qtc"), cmoForce
  369.         RemoveFile MakePath(DeadPath$, "qtrt21.qtc"), cmoForce
  370.         RemoveFile MakePath(DeadPath$, "navg.qtc"), cmoForce
  371.         RemoveFile MakePath(DeadPath$, "qtiv31.qtc"), cmoForce
  372.     rem version 1.9 and later
  373.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  374.         RemoveFile MakePath(DeadPath$, "qtyvu9.qtc"), cmoForce
  375.         RemoveFile MakePath(DeadPath$, "qtmsvc.qtc"), cmoForce
  376.         RemoveFile MakePath(DeadPath$, "qtiv32.qtc"), cmoForce
  377.         RemoveFile MakePath(DeadPath$, "qtiyvu9.qtc"), cmoForce
  378.         RemoveFile MakePath(DeadPath$, "qtvhdw.qtc"), cmoForce
  379.         RemoveFile MakePath(DeadPath$, "dhio_dh.qtc"), cmoForce
  380.         RemoveFile MakePath(DeadPath$, "reelmgic.qtc"), cmoForce
  381.  
  382.     RemoveOldQTFiles = FILES_REMOVED
  383.  
  384. END FUNCTION
  385.  
  386.